package br.com.pizzaria.control;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.pizzaria.model.Ingrediente;
import br.com.pizzaria.model.Produto;
import br.com.pizzaria.model.dao.ProdutoDAO;

@ManagedBean
@ViewScoped
public class ProdutoBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private Produto produto;
	private List<Produto> listAll;
	private List<Ingrediente> list;
	private ProdutoDAO dao;
	private Ingrediente ingrediente;

	public ProdutoBean() {
		dao = new ProdutoDAO();
		ingrediente = new Ingrediente();
		zerar();
	}

	public void gravar() {
		produto.setIdProduto(0);
		dao.cadastrar(produto);
		zerar();
	}

	public void addIngrediente() {
		getListTableIngrediente().add(ingrediente);
	}

	public void removeIngrediente() {
		getListTableIngrediente().remove(ingrediente);
	}

	public void excluir() {
		dao.excluir(produto);
		zerar();
	}

	public void alterar() {
		dao.alterar(produto);
		zerar();
	}
	
	private void zerar(){
		listAll = dao.listarTodos();
		produto = new Produto();
		list = new ArrayList<Ingrediente>();
		list.clear();
		produto.setIngredientes(list);
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public List<Produto> getListAll() {
		return listAll;
	}

	public void setListAll(List<Produto> listAll) {
		this.listAll = listAll;
	}

	public List<Ingrediente> getListTableIngrediente() {
		return produto.getIngredientes();
	}

	public void setListTableIngrediente(List<Ingrediente> listTableIngrediente) {
		this.produto.setIngredientes(listTableIngrediente);
	}

	public Ingrediente getIngrediente() {
		return ingrediente;
	}

	public void setIngrediente(Ingrediente ingrediente) {
		this.ingrediente = ingrediente;
	}

}
